package com.cty.server;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;


/**
 * @Auther: cty
 * @Date: 2020/1/27 15:56
 * @Description:  加入了Servlet解耦了业务代码，可根据不同的服务请求做出不同的服务响应
 * @version: 1.0
 */
public class Test06Server {
    private ServerSocket serverSocket ;
    public static void main(String[] args) {
        Test06Server server = new Test06Server();
        server.start();
    }
    //启动服务
    public void start() {
        try {
            serverSocket =  new ServerSocket(8888);
            receive();
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("服务器启动失败....");
        }
    }
    //接受连接处理
    public void receive() {
        try {
            Socket client = serverSocket.accept();
            System.out.println("一个客户端建立了连接....");
            //获取请求协议
            Request request =new Request(client);
            //获取响应协议
            Response response =new Response(client);
            //【通过new不同的servlet对象来实现响应不同的服务——人为判断url与服务对象的关系】
            Servlet servlet= null;
            if(request.getUrl().equals("login")) {
                servlet= new LoginServlet();
            }else if(request.getUrl().equals("reg")) {
                servlet= new RegisterServlet();
            }else {
                //其他....
                servlet= new OthersServlet();
            }

            servlet.service(request, response);
            //关注了状态码
            response.pushToBrowser(200);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("客户端错误");
        }
    }
    //停止服务
    public void stop() {

    }
}
